約 5,292,962 件
https://w.atwiki.jp/shanghai_android/pages/13.html
Android、OPhone関連資料 ■2011年7月28日 第18回 日本Androidの会 東北支部発信会向け講演資料 中国のAndroid事情 ■OPhoneの概要と意義 第2回上海Androidの会 勉強会用資料(※PDFファイル、1.9MB) トップページ
https://w.atwiki.jp/cod_infinitewarfare/pages/27.html
ゾンビモードとは 古くはWaWから実装された「オマケ」が人気となり発展したもの。 最大4人までco-opによる協力プレイが楽しめソロでも遊べる。 Bo(WaW)シリーズとは違い、ストーリーに繋がりや前作といったものはなく、 今作のゾンビはIWから新しい物語となっている。 そのためBo3に比べると人物相関図や用語などを勉強する必要が無いため気楽。 ゲームも新規向けにマイルドな調整となっており非常に遊びやすくなっている。 ただし戦略などはBo3など今までのゾンビモードのものが応用できるため、 経験者は新規要素さえ把握してしまえばいきなり高ラウンドを目指すこともできる。 イースターエッグ(謎解き)も豊富に用意されているため 最初のマップとしては遊びごたえがあるものに仕上がっている。 立ち回りとしても過去シリーズの知識は使えるものが多いため検索してみるのも良い https //www41.atwiki.jp/cod_bo3/pages/41.html (Bo3@wikiのゾンビ項目) 初心者に向けて まずはソロでマップと立ち回りを覚え、ランクを上げていこう。 低ランクは相手にされないというよりもマッチング段階で抜けられたり、ハッキリ言って人権が存在しない。 序盤のウェイトが大きいため序盤の動きで抜ける人も多い。 蘇生も必ずしもされるとは限らない。 イースターなどで協力して遊んでいる分には蘇生されることもある。 1プレイ1時間~3時間と長期戦になることもあり、 好き勝手してるプレイヤーを見限る速度はマルチプレイよりも早い。 VCを使って意思疎通を行うプレイヤーも多いためありがたい激励をいただくこともしばしば。 マルチco-opの敷居としてはマルチプレイよりも格段に高く感じるかもしれないが 要は覚えて実行さえすればいいだけのこと、数をこなして慣れていこう。 また謎解き(メインイースター)部分がゾンビゲームを楽しむにあたっての課題になっている。 一通り頭に叩き込むなり印刷するなり、少なくともみんなが『今何をしてるかがわかる』程度にはなろう。 高Rを目指すにあたって Boシリーズとは違ってメインイースタークリア後の報酬が大きくなっている。 SpaceLand:2段階PaP、ワンダーウェポンPaPの開放 Rave in the Redwood :スマイリーチェーンソー(丸鋸)の開放 どれも40以降の高Rを目指すにあたって非常に有用。 そのためどれだけ早くメインイースターをクリアできるかがR数を伸ばすポイントになっている。 R25以降はゾンビの物量が多く、強度も高くなるためR15~24の間にクリアを目指そう。 基本ルール ゲームの進行と目的 ゲームはラウンド(R)単位で進行する。 R数が増えるにつれて敵の硬さ・速さ・出現数が増加。 そのRに出現したゾンビをすべて倒すと次のRへ、プレイヤーが全滅すると終了となる。 謎解きによるエンディングは各マップごとに用意されているものの、 トロフィーなどの実績要素とコーリングカードなどであり、 クリアしたから終了…となるケースは非常に少ない。 (シリーズ完結のBo3のDLC4のみ終了となった) クリアによる終了が無いため目的としては 『どれだけ長いRを生き残れるか』という点に落ち着く。 馴れてきたら R30の生存(ソレ以上はメインクリアが先) 1プレイ中でのメインの謎解き イースターハント なども目指してみよう。 プレイヤーについて ゾンビLvと武器Lv マルチと同じくゾンビには固有のLvがある。 ゾンビのLv:アンロックされる武器・カードが増える 武器Lv:付けれるアタッチメントの数が増える(マルチと共有) 武器Lvはとくにお互いのモードで上げにくいものを上げれるため便利、活用しよう。 今作からアーマリー武器(ガチャ武器)も共有となっておりゾンビで使用ができる。 どれも強力な追加効果があるため積極的にガチャを回してみよう。 ゾンビクレート(ゾンビガチャ)は3枠中の1枠がカードパックになっている。 カードの中身についてはノーマル・レアガチャでの違いは無いため、 レア=マルチのガチャ、ノーマル=ゾンビのガチャで使い分けるのがオススメ。 体力 全てのプレイヤーはLv問わず『3回殴られるとダウン』する。 ダウンした状態で『15秒経過すると死亡』する。 全てのプレイヤーが死亡、又はダウンすると終了となる。 体力自体を後述のParkで+2回分増やせるが毎回ゲーム内で行う必要がある。 殴られると画面に血糊がつき、ダウン寸前になると画面が真っ赤になる。 減ったライフは一定時間攻撃されなければ上限までゆっくり自動回復する。 今作から殴られた方向に血糊が付く上に自動回復で1発分回復すると血糊が1個消える。 今までよりも体力管理、とりわけ乱戦時の管理がしやすくなっている。 ただしダウンしたプレイヤーは他の生存者から蘇生してもらうことができるし、 死亡した場合も生存者がRを進めるか、後述のアフターライフで復活することができる。 諦めずに立て直しを狙ってみよう。 特に今作はアフターライフでの復活は任意タイミングで行えるため、 身内で遊んでいたり、VCを使っている場合は『復帰しやすいタイミング』で戻ることができる。 武器 全てのプレイヤーはLvを問わず『初期装備がハンドガンとフラググレネード』になっている。 前述の武器Lvやアーマリー武器での違いはあるものの、ほぼ同じ条件でのスタート。 ここから後述のポイントを消費して各々が武器を調達、改造などをしていく。 マルチとの違いは 一部のアーマリースキルがゾンビ用に調整されている フュージョンマグが残弾数からのマガジンへ移動加速のみ(残弾が0の場合は増えない) 武器の入手は 壁武器を買う(ウォールバイ) ミステリーホイールを引く クエストを進めてワンダーウェポンを手に入れる ゾンビの落とし物から入手(グレネード各種のみ) 攻撃力の強化は パックアパンチ/Pack a Punch(PaP)による武器の改造 ParkのBANG BANGSの購入(威力2倍+反動増加) などで行うことができる。 ただし壁、箱武器の購入以外はポイントの消費だけでなく、謎解きをある程度する必要がある。 キャラクターの強化 マルチと同じくゾンビでも各地に点在するParkマシンからポイントで購入するとParkをつけれる。 武器だけでなくプレイヤー自身を強化できるため積極的に活用しよう。 1ゲーム中でしか効果が無い(毎回付ける手順が必要) 死亡すると全てなくなる(ダウン→蘇生なら失わない) Parkマシンはそのエリアの電源を入れないと使用できない 付けたParkと同じマシンで取り外しができる(新要素) 最大で違うものを5つまで付けれる(前作から+1個) またアーマリー武器の追加能力やF Fカードでも付けることができる。 キャラクターができる行動 IW本編やマルチとは大きく異なり、CoD Ghostに近い。 移動では歩き・ダッシュ・スライディングができる 姿勢は立ち・しゃがみ・腹這いができる 攻撃は射撃(腰撃ち・ADS・ジャンプ)・格闘・グレネード投擲ができる ダッシュは一定距離以上走ると息切れを起こして歩きになる ジャンプは1段階までしか行えずブーストなどは無い ゾンビを倒すなどしてF Fゲージを貯めるとカードが使える そのためマルチと同じ感覚でダッシュをすると肝心なところで息切れし追いつかれてしまう。 詳しくは立ち回りの項目で説明するがダッシュ>スライディング>ジャンプ>ダッシュ… と各動作の隙をキャンセル、これを繰り返すと素早く移動ができるので覚えておこう。 また本編と同じくボタン長押し(PS4の場合は□)で『アクティベート』ができる。 ゾンビでは物を拾う、使うなど重要な動作なので覚えておこう。 Fate/Fortuneカード(F F) 前作Bo3で追加されたゴブルガムに取って代わる要素。 スタート前のロードアウトから5枚設定してゲーム内で使用する。 使用するにはゾンビを一定数以上倒す必要があり、 右下のゲージがMAXになるとポイントを消費せず任意のカードを任意のタイミングで発動できる。 ゴブルガムと違ってこの3点が大きく異る。 FateカードはゾンビLvで開放され、ゲーム毎に補充され消費しない Fortuneカードはゾンビクレート(ガチャ)でランダムに入手、使うと消費される 消費するもののFortuneカードの効果は起死回生となる強力なものが多い。 カードは使用すると消費され、任意のタイミングでマップ各地の占い師から5000ptで再補充ができる。 ただしFortuneカードはストックがある場合にのみ補充されるため、 全てのカードをFortuneで揃えるのはリスクが高い。 ポイントについて 使い道 ゾンビを攻撃するとポイントが溜まり、それを消費することで Parkマシンや壁武器、ミステリーホイールなどの購入 塞がれている有料壁を開ける PaPでの武器改造 F Fカードの補充 などが行える。 低Rで効率よく稼ぎ、効率よく消費することで敵の強化に押されることなく生存率が大きく高まる。 とくに壁開けは他プレイヤーにも影響するため必要なポイントを残すか、 それすら使ってでも優先的に開けるかの選択は重要になっている。 過剰なポイントは無意味なので序盤から溜め込むよりも適度に状況にあわせて使っていこう。 稼ぎ方 主に敵を攻撃することでポイントを貯めることができる。 銃、格闘、感電で攻撃する(10pt) 銃、爆発、炎上、感電で倒す(60pt) HSで倒す(120pt) 格闘でキル(130pt) パワーアップのニュークで倒す(100+100×R数pt) その他にゾンビが落とすキャッシュを拾う(200~1000pt)や、 バリケードの修復(10pt回数はR数+4)でもポイントを稼ぐことができる。 重要なのは倒せずとも銃の攻撃が当たれば10pt稼げるということ。 銃弾は実弾武器の場合は貫通力が高いため1列並んだり集団相手に撃ち込むと一気に稼げる。 そのためSMGなどの威力が弱いが弾数が多い武器は稼ぎに向いている。 もう片方を殲滅や、道を切り開くための強力な武器にするとポイントが効率よく稼げる。 マルチの場合はダウンした味方の蘇生をすると蘇生相手から一定割合のポイントを貰える。 失うよりマシなので蘇生出来る場合は積極的に蘇生を行おう。 ただし共倒れでは意味がないので時には見捨てるのも大事、状況をよく見て考えよう。 消費の優先順位 立ち回りの項目にも絡むが『R1~3までは初期HGと格闘だけで問題ない』ため、 序盤は壁開けを優先すると強化可能になるまでのR数が短縮できるため格段に楽になる。 ミステリーホイールは強力な武器が手に入る可能性がある反面、外れ武器も多い。 ソロであれば自分の都合にあわせて優先順位を立てられるが、 マルチの場合は必要なポイント数が増えるため注意が必要。 500~700のHGを購入しておき、壁開けをしばらくやって R7ぐらいからホイールや1200~1250の武器を購入すると良い。 とりわけ今作はHGが強く使いやすいため壁売のSMGやARは先延ばしがしやすい。 初期HGはPaPすることで非常に強力な武器になるので温存するのもアリ。 敵について ゾンビ マップで出て来る敵だけでなくゾンビの姿も異なるが基本的にゾンビであれば変わらない。 格闘攻撃のみしてくる(プレイヤーに1ダメージ、3発でダウン) Rを経過すると固く、移動が早くなる 近くにいるプレイヤーを追いかける 攻撃したプレイヤーを優先的に追いかける 一定距離離れると消滅し、同数がプレイヤーの近くから出現する 飛び降りられる段差や一部の進行不可の地形も移動する 最後の1体は走るスピードが上がり、沸き直すとさらに上がる 速度上限になるとプレイヤーのダッシュより少し遅い程度 プレイヤーよりも鋭角に曲がることができない それぞれに接触判定がある 同一画面に出現できる数が決まっている 足元にダメージを与えると脚部が破損し、腹這い移動のクロウラーになる プレイヤーとの位置を間にある障害物を計算して最短ルートで移動する 最後の2つの項目はBo3と違っている部分があるので注意。 足元の破損はどの銃器でも行えるようになっており、エネルギー系は特に破損がしやすい。 Bo3ではゾンビ同士にヒットボックス(当たり判定)の認識があり、 後続が前の集団を迂回して追いかけてくることがあった。 乱入ラウンド プレイヤーが一定の条件、例えば「壁を2つ開ける」「一定R経過する」 などを満たすとゾンビ以外の敵が追加される。 Zombie in SpaceLandでは「ピエロ」と「ブルート」が追加。 ピエロは前作でいう「犬」に相当する敵でワープとともに2匹セットで出現する。 脆い代わりに近距離で自爆をし、距離を話しすぎると再度ワープで近くに出現する。 5R刻みでピエロだけが出現するラウンドがあり、倒し切るとマックスアモが出る。 11R付近からはゾンビに混じって出現するようになる。 プルートは前作のマルグワやパンツァーのような中ボスタイプの敵。 倒さなくてもRを経過させることができるものの、 倒すと何らかのパワーアップを確実に落とす。 撃退してから+4~6Rで再度乱入し、R20からは2体同時など数が増える。 マップに最大4体(?)まで残るため協力して排除しよう。 ゾンビへの立ち回り R数で強化&増加するものの流石に頭打ちがある。 同一画面での表示限界が良い例で例えそのRで200体出現するとしても、 一度の出現数はどれだけRが増えても30~40付近までになっている。 倒した端からストックから補充される仕組みなのでパニック映画のような飽和攻撃はされない。 1集団を処理したら次の集団を集めて処理…を繰り返し、 どれだけ処理の間ミスをしないかが生存率に繋がる。 またプレイヤーのダッシュよりも早くはならない&鋭角に曲がれないため、 ダッシュに歩きを混ぜても追いつかれることは無い。 落ち着いて処理を繰り返そう。 代表的な処理には2つの方法がある。 トレイン:ゾンビを引き連れて一定ルート、エリアを各々が占有して倒す 篭もり:正面以外から敵がこない場所で全員が集まり集中砲火で倒す マップによってどちらが優れているかは大きく変わるがIWではトレインを推奨する。 Bo3とは違ってゾンビの挙動が大きく安定しているため練習にも向いている。 トレイン まずは1集団をまとめるところからスタート。 引っかる障害物のない走りやすいエリアを選び、ぐるぐる周りながらゾンビを集める。 表示限界まで集まったぐらいから「○」から「8の字」を描くように移動をする。 こうすると プレイヤーよりも鋭角に曲がれない それぞれに接触判定がある ということから先頭集団が詰まり、「8の字」の交差部分で後続とすれ違う形になる。 トレインでは背後に居るゾンビはプレイヤーのダッシュよりも遅いため怖くなく、 正面から来るゾンビが一番怖いので正面からくるゾンビを上手く避け、 振り返り「8の字」の円弧の部分で後ろに溜まったゾンビの頭目掛けて乱射する。 馴れるまではこの円弧の部分を楕円になるよう引き伸ばし、 交差部分は鋭角にするとゾンビが一直線になりより当てやすくなる。 馴れてくればより狭いスペースでも誘導ができるので練習してみよう。 参考動画としてはゾンビモードの動画配信をしているプレイヤーを見るのが早い。 今作ではParkに「スライディング跡に火柱がたち炎上させれる」TRAIL BLAZERSがあるため、 ゾンビに関してはトレインの制御ができれば弾を使わずに処理も可能になっている。 マルチでのマナーについて 無言での放置はしない ソロと違ってゲームが止まらないため放置=ダウンになる。 プレイヤーによっては危険な状態でも蘇生に向かおうとするため、 全滅の引き金になることが多い。 ただしラスト1集団を誰かが引き連れることで短時間の休憩は取れるため、 トイレなどの場合は必ずVCで一言断るなりしてから向かおう。 CS版であれば本体にマイクが付属しているので探してみよう。 別段、プレイ中ずっとしゃべる必要はないが非常時には役に立つ。 もしも急用などで中断する必要がある場合はゲームからの退出を行おう。 Rごとに参加人数での難易度判定が行われるため居続けるよりも味方の脚を引っ張らずに済む。 ポイントとラウンドの節約 最高の効率を目指す必要は無いが無闇に散財するのは味方の脚を引っ張ることになる。 ラウンドで出現するゾンビの数が決まっている以上、ゾンビも資産。 貯めるべきポイントで溜め、使うべきポイントで使うことはみんなのためにもなる。 とくに謎解きは効率よく進めることで大幅にR数の短縮ができ、 謎解きを進めることで強化も早い段階から開放される。 ポイントを過剰に溜め込んでる時点で「ゾンビ初心者」がまるわかりになる。 大体R6までは5000pt以上を持ち歩かないよう5000以上になったらドンドン扉を開けてみよう。 R7あたりからぼちぼち強化する頃合いなので開けるべきドアを選別し、 先に強化するか、更に行ける場所を増やすかを考えればいい。 予習は大事 Lv1でいきなりマルチにくるよりも、まずはソロで何度かR15まで生存をしてみよう。 R15になると効率よく進めればメインの謎解きも中盤まで進められる。 ココらへんまで1人で進められればマルチでも足を引っ張ることは少ない。 動画やこのwikiなどを見て謎解きの手順を知ったり、 実際にゲーム内で練習をすると良い。 歴代ゾンビを遊んでいても謎解きはマップ固有になっているため、 誰もが初心者の状態から遊ぶことになる。 co-opとはいうもののゾンビの大半はソロ作業。 脱・初心者を目指すためだけでなく、生存するためにも予習は無駄にならない。 一通り手順を覚えたらソロで実践し、どれだけ少ないR数で到達できるかを磨くのも良い。 無闇に仲間に近寄らない ゾンビの動きは素直なものでSTGの「自機狙い弾」に近い。 そのため近くによることで思わぬ方向にゾンビの壁ができるなどの事故が起こる。 近づいたところで回復できたり、バリアを張れたりするわけではないのでメリットもない。 一定距離を離して、ただしそれぞれの状態を小まめに確認できるぐらいにしよう。 NGな行動としては『トレインしている味方の傍に行く』『他人の獲物を横取りする』 これらはするだけで嫌われる行動なので必ず避けよう。 ただし馴れていてもすれ違う必要がある場面は度々出くわす。 死亡時の復帰でPark購入で少しでも危険エリア避けて横切る必要がある 乱入のブルートに追われてる この場合はVCで言うなり、味方のゾンビに当てないように発砲するなりして知らせよう。 馴れていれば迂回路に移動したりなど相手も対応をしてくれる。 味方の蘇生は状況を見て行う R10を超えた当たりからは単独での蘇生のリスクが上がり難しくなる。 作成アイテムを使う、1人が蘇生してもう一人がカバーをする、カードを使う、 などをするとリスクを下げれるがそれらができないのであれば、 無理に蘇生に向かうよりかは最後の一匹をトレインしつづけ復帰時間をつくるなりしてカバーしよう。 格闘攻撃や発砲をされたら何か伝えたい事がある、という合図 これはゾンビシリーズで度々行う意思表示の仕方。 VCでもいいがいちいち注意するのも疲れるし、 同行を促したり、場所を示すときにもよく使われる。 最後のラス1を処理してもいいよ、という場合はその場で連続ジャンプなども使われる。 覚えておきたいのはゾンビでは「全員がアクティベートする必要があるもの」なども度々登場する。 先の予習でわかっていれば問題はないが、予習しててもうっかり忘れることもあるため これらの意思表示をしてきたら一度相手が伝えたいことを考えてみよう。 逆に、それらでない場合は絶対にしてはいけない。
https://w.atwiki.jp/sevenlives/pages/1564.html
Linux Kernel? Hardware Abstraction Layer Androidランタイム? Java API フレームワーク? OHA? AIDL? Dalvik VM Androidランタイム? ART? アンドロイド・マーケット? Intent? Over The Air? ブラウザ(Android) Droid Font? Board Support Package? Trebleプロジェクト? Google Play? Android Studio? Android SDK? ■ アプリケーション・フレームワーク Activity Manager? Window Manager? Content Provider? Package Manager? View System? Resource Manager? Location Manager? Notification Manager? ■ Android UI Action Bar Activity(Android) Fragments(Android) Droid Font? Android 2.X? Android 3.X? Android 4.X Android Cupcake? Android Donut? Android Eclair? Android Froyo? Android Gingerbread? Android Honeycomb? Android Ice Cream Sandwich? Android Jelly Bean? Android KitKat? Android Lollipop? Android Marshmallow? Android Nougat? Android Oreo Google HAXM
https://w.atwiki.jp/api_programming/pages/195.html
下位ページ インテントとインテントフィルタ サービス(Service) ストレージオプション フラグメント(Fragment) プロセスとスレッド(processes and threads) リストビュー(List View) レイアウト(Layout) 入力コントロール(Controls) 設定(Setting) 通知(Notification) Content スピナーコントロールの設定レイアウトの準備 選択肢の設定string.xmlでの設定 プログラム側から値を選択する アクティビティアプリの閉じられ方で、挙動が異なる アクションバーの代わりに、ツールバーを使うアクションバーを消す ツールバーをレイアウトに追加する Activity内で、アクションバーの代わりに使う記述をする スライドメニューを実装するドロワーレイアウトを作成する ドロワービューの中身を準備するListViewで作る 別のXMLファイルで作る ドロワーのオープン・クローズを実装する バックグラウンド処理(サービス) 閉じられても動作するサービスを動かすServiceクラスの作成 Activityから、作成したサービスを動かす 加速度センサの情報を受ける 回転角の情報を受け取る回転角の解釈 画面の回転を抑制するAndroidManifest.xmlで抑制する 動的に(プラグラム内で)で抑制する インテントにオブジェクトの情報を乗っけるparcelable をインプリメントしたクラスをつくるParcelable.Creater フィールドの実装 BundleやIntentに情報を乗せる Activity側で受ける 複数の情報をリストにして表示する バイブレーションを一定時間、作動させるパーミッションの追加 Vibratorオブジェクトを生成する vibrateを実行する 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定するメニューリソースを準備するフォルダの作成 リソースファイルの作成 設定したメニューファイルを、Activityのメニューバーに評させる メニューの選択を受け取る処理を作る チェックボックスを動作させる 設定画面を設定する/設定情報をローカルストレージに残す 記録内容をGoogleスプレッドシートに記録する 記録内容をGoogleカレンダーに記録するブラウザでURLを開く ブラウザを開くURIとして、認証ページを指定する リダイレクトを受け取る 受け取ったリダイレクトをデータに紐解く codeを送って、tokenを受け取る tokenを保存する 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する USBデバッグ リリースビルド スピナーコントロールの設定 [部分編集] レイアウトの準備 Spinner android id="@+id/planets_spinner" android layout_width="fill_parent" android layout_height="wrap_content" / 選択肢の設定 string.xmlでの設定 まずは、string.xmlに文字配列を作る string-array name="planets_array" item Mercury /item item Venus /item item Earth /item /string-array この文字配列をアダプタにして、スピナーコントロールにアダプタをするリソースのアダプタ化には、ArrayApapter.createFromResource を使用できる。simple_spinner_item はデフォルト外観を設定している。通常はこれで良し。 setDropDownViewResource(int) は選択時に一覧を表示するのに使う。なくても一応ドロップダウンは出てくるが、ちょっとしょぼい? Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter CharSequence adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); createFromResource - ArrayAdapter | Android Developers setDropDownViewResource - ArrayAdapter | Android Developers プログラム側から値を選択する Spinner.setSelection で位置を指定する。その位置を取得するにはAdapterを使う。 使っているアダプタを取得するobjSpinner.getAdapter でアダプタを取得できる objAdapter.getPosition("...") でセレクタの位置を取得値が見つからなかったら -1 が返る objSpinner.setSelection に先程取得した位置を設定する ArrayAdapter spinnerAdapter = (ArrayAdapter) objSpinner.getAdapter(); int i = spinnerAdapter.getPosition("value"); objSpinner.setSelection(i); getAdapter - AbsSpinner | Android Developers getPosition - ArrayAdapter | Android Developers setSelection - AbsSpinner | Android Developers アクティビティ アプリの閉じられ方で、挙動が異なる onDestroyが呼ばれない限りは、Serviceを使わずとも、 ↓にある通り、ホームボタンとバックボタンでアプリケーションから離れた場合で挙動が違う。 https //kokufu.blogspot.jp/2011/03/activity.html 説明として、 ホームボタン:ホームアプリケーションが起動している バックボタン:Activityスタックからポップしている と書いてあったが、気持ち悪いのは、□ボタンを押すとあたかもまだ生きているかのように、アプリケーションリストに表示されるから。画面上に残っているが実際には onDestroy で消えている。 このあたりが、「アプリケーションをスワイプして消しても消さなくてもメモリにはそれほど影響しない」ということなんだろうか。 アクションバーの代わりに、ツールバーを使う [部分編集] 今後の拡張性から、アクションバーよりツールバーを使ったほうが良い、という記述をちょこちょこ見かけるが、Android Studioでプロジェクトを作ると、基本はアクションバーが設定されている。これをツールバーに置き換える。 アプリバーの追加 | Android Developers Toolbar | Android Developers AndroidのToolBar(新しいActionBar)メモ | Qiita アクションバーを消す res/values/styles.xmlで AppThemeのテーマを変更する style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" ツールバーをレイアウトに追加する android.support.v7.widget.Toolbar android id="@+id/toolbar" android layout_width="match_parent" android layout_height="wrap_content" / レイアウトの@android */* ,?attr/* ,?* ,?android attr/* の違い | Qiita Activity内で、アクションバーの代わりに使う記述をする /* ToolBarの設定 */ Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitleTextColor(Color.WHITE); // 設定をしておく setSupportActionBar(toolbar); // アクションバーの代わり、という設定 これを書かないと、画面上では何も表示されない(空間だけはある) スライドメニューを実装する [部分編集] NavigationDrawer が正式名称? DrawerLayout | Android Developers ナビゲーションドロワーの作成 | Android Developers ドロワーレイアウトを作成する レイアウトxmlにて、DrawerLayout オブジェクトをレイアウトのルートビューとして指定する。 ルートの中にドロワービューとメインビューを設定する順序はメインビューを先にする高さはルートに合わせる(match_parent) 次にドロワーのビューを指定するlayout_gravityを指定する(layout_gravity:どっちにくっつけるか、どちら方向から出てくるか?)右から左に出す場合にはstart layout_heightは親ビューと同じ高さを指定する layout_widthはすべての情報が見える幅を指定する ドロワービューの中身を準備する ListViewで作る ListViewの中に android layout_gravity="..." を入れないと、スライドで入ってくる設定にならず、重ねて見えている状態になる android background="#111" 背景がないと、中途半端にすけた状態で表示される。 別のXMLファイルで作る NavigationViewで作った場合、ヘッダ部分とメニュー部分をそれぞれレイアウトとメニューで作成する app headerLayout="@layout/drawer_header" app menu="@menu/drawer" ドロワーのオープン・クローズを実装する DrawerLayout にリスナーをセットする。このリスナーは DrawerLayout.DrawerListener を実装して、使う。 Activity にアクションバーがセットされている場合は ActionBarDrawerToggle が DrawerLayout.DrawerListener を実装する。 DrawerLayout mDrawerLayout = ...; ActionBarDrawerToggle mDrawerToggle; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) {...} public void onDrawerOpened(View drawerView) {...} }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); 【Android】スライドして表示されるメニュー | Qiita Navigation Drawer の概要 | Android 開発入門 Navigation Drawer の基本的な実装方法 | Android 開発入門 バックグラウンド処理(サービス) サービス - Android Developers Androidアプリでのバックグラウンド処理と通知機能 | Android Studio 2で始めるアプリ開発入門 - CodeZine 流れ Serviceのサブクラスを作成する AndroidManifest.xmlにサービスを登録 サブクラスで、必要なクラスをオーバーライドする。次のあたり。onCreate() onStartCommand() onDestroy() アクティビティからサービスを起動する (きちっと止まるように設計しておく) 閉じられても動作するサービスを動かす バックグラウンドで動作させるためにはServiceを用いる。 Serviceクラスの作成 Activityのように、作成・開始などのイベントで動くが、おもに3つ。 onCreate onStartCommand onDestroy Service | Android Developers Activityから、作成したサービスを動かす startServiceで起動、stopService(stopSelf)で停止。忘れずにServiceを止めないと、いつまでも動き続ける。 startService、stopServiceなどには、インテントを準備して、サービスにそれをなげる形をとっている。 startService - Context | Android Developers stopService - Context | Android Developers stopSelf - Service | Android Developers 加速度センサの情報を受ける 回転角の情報を受け取る センサーは加速度まではそのまま読み取れるが、回転角は加速度情報、地磁気情報から計算する必要がある。まず getRotationMatrix で回転行列を求め、getOrientation で回転行列を回転角に変換する(計算する) getRotationMatric - SensorManager | Android Developers getOrientation - SensorManager | Android Developers 引数に取った2つの配列には、傾斜行列、回転行列(の情報)が計算されて入ってくる。情報が不要ならnullでよい。 回転角の解釈 正位置として Zは天を指す Yは磁北を指す Xは Y,Z の外積を指す 画面の回転を抑制する AndroidManifest.xmlで抑制する 回転させないActivityに android screenOrientation="portrait" を追加すると、縦向き固定になる activity | Android Developers 動的に(プラグラム内で)で抑制する Activity内で、setRequestedOrientation を呼び出す setRequestedOrientation - Activity | Android Developers screenOrientation - ActivityInfo | Android Developers インテントにオブジェクトの情報を乗っける bundleで多くの情報をわたすような方法として、putParcelableArrayList くらいしか見当たらないので、これを使う。そのためには、Parcelable をimplements したようなクラスを作る必要がある。 Bundle | Android Developers parcelable をインプリメントしたクラスをつくる Parcelable実装にはParcelable.Createorというstatic fieldが必要。そのフィールドの初期化にて、Parcelに保存したデータを復元するためのコンストラクタを呼ぶ。 Parcelable | Android Developers Parcelable.Creater フィールドの実装 Parcelable.Creater | Android Developers createFromParcel(Parcel source)Parcelable.writeToParcel() で書き出されたParcelデータをインスタンス化する → コンストラクタを作っておく newArray(int size)ParcelableクラスのArrayを作る BundleやIntentに情報を乗せる IntentならputParcelableArrayListExtra、BundleならputParcelableArrayList で情報を登録 putParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers Activity側で受ける IntentならgetParcelableで受けられる。受けたときにすでにParcelableをimplementしたオブジェクトで受けられる。 getParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers 複数の情報をリストにして表示する [https //www54.atwiki.jp/api_programming/pages/202.html] バイブレーションを一定時間、作動させる Vibratorインスタンスからvibrate()を実行する。バイブレーションの実施にはAndroidManifest.xmlにパーミッションの追加が必要。 パーミッションの追加 マニフェストにパーミッションを追加する - パーミッションの宣言 | Android Developers Vibratorオブジェクトを生成する getSystemServiceでVibratorオブジェクトを生成する Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); getSystemService - Context | Android Developers Vibrator | Android Developers vibrateを実行する 幾つかパターンはあるが、かんたんなところで、これ。 vibrator.vibrate(500); vibrate - Vibrator | Android Developers 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定する メニューリソースを準備し、表示させる。そのうえで、メニューのタップ動作に対する反応を記述する メニュー | Android Developers メニューリソースを準備する フォルダの作成 デフォルトではメニュー用のフォルダが無い(かもしれない)ので、res/menuを追加し、ここに入れておく。 resフォルダ右クリック [New]>[Android resource directory]を選択 ダイアログで、「Resource type 」から「menu」を選択し、OK リソースファイルの作成 menuフォルダを右クリック [New]>[Menu resource file] ファイル名を入力し、OK ファイル内に menu item / item / /menu を記述(実際はidやタイトルを設定する必要あり) Menu Resource | Android Developers 設定したメニューファイルを、Activityのメニューバーに評させる onCreateOptionMenuをオーバーライドして、この中でリソースの指定などを行う。XMLのメニューを実際?のメニューオブジェクトに変換するのに、inflatorを使用できる。 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); //(1) inflater.inflate(R.menu.menu_options_menu_list, menu); //(2) return super.onCreateOptionsMenu(menu); //(3) } onCreateOptionMenu - Activity | Android Developers メニューの選択を受け取る処理を作る オプションメニューを作っていれば、その受取はonOptionsItemSelectedをオーバーライドして処理できる。 @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } このとき、itemにクリックされた情報が入っているので、これを紐解いて、どのメニューがクリックされたか判断し、switchなどで処理する。 int itemId = item.getItemId(); Android 3.0(APIレベル11)以降では メニューリソースXMLのitemに、android onClick を記述しておくことで、動作を定義させることもできる。 チェックボックスを動作させる Android/入力コントロール(Controls) 設定画面を設定する/設定情報をローカルストレージに残す Android/設定 記録内容をGoogleスプレッドシートに記録する http //qiita.com/konnobu/items/8bec3d5a45235fc88a08 記録内容をGoogleカレンダーに記録する 多分、クライアント用のライブラリが作られていて、簡単に認証処理をしたり、データを取得したりできるようになっていると思われるが、別サイトでも転用が聞くように、地道な方法を取ってみる。というか、専用のライブラリの使い方をよくわかっていない。 流れは OAuth2.0で認証Google API にプロジェクトと登録(キーの発行) 認証コードを発行 受け取り コードを access token と交換 access token も使って、リクエスト送信 こまごまと引っかかった場所が多数。 AndroidManifest.xmlにパーミッションの設定が必要 ブラウザでURLを開く Android/インテントとインテントフィルタ ブラウザを開くURIとして、認証ページを指定する GoogleのOAuth2認証 OAuth2認証 | Android Developers Step 1 Send a request to Google's OAuth 2.0 server | Google Identify Platform リダイレクトを受け取る 大概の(google 以外でも)場合は、認証後に指定したリダイレクト先に飛ばしてくれる。そのスキーム名に応じて、Android側でどのアプリで開くのかを考えてくれる。Android に「このスキームがきたら、俺のアプリで開いて」と指示するためには、AndroidManifest.xml に記述する必要がある。 scheme // host port / path intent-filter内で、action, category, data を指定する。上記のリダイレクト先に対応する内容を書くのは data で、scheme は data android scheme="com.example.testproject" / のようになる。 Intent の 定数として ACTION_VIEW などが定義されているが、実体は文字列で、それが android.intent.action.VIEW などになる(ので、どれを設定するかはIntent を参照)。ブラウザでどんなスキームがきたらヨソになげるのか、どんな action として投げるのか、説明されている場所がわからないが、ひとまず action ACTION_VIEW category CATEGORY_BROWSABLR scheme ここは各自で で開けた。redirect_uri で scheme //~ が指定できない( /だけ)なので、hostは存在せず、pathだけ。 インテント解決 - インテントとインテント フィルタ | Android Developers Intent - Android Developers 受け取ったリダイレクトをデータに紐解く 一旦受け取れれば、中身は getIntent() を経由して、中身を見られる(Intent.getAction(), Intent.getCategories() など)。OAuth では、path のなかに code を入れて返してくるので、Dataのなかを探せばある Intent intent = getIntent(); String data = intent.getDataString(); とすると、googleの認証で指定した redirect_uri のあとに code がくっついて返ってきている。以下、サンプル com.example.####.#### /oauth2callback?code=4/8abcdefg# 上記の場合、oauth2callback を uri.getPath() で、4/8abcdefg# を getQueryParameter("code") で受け取れる。 getIntent - Activity | Android Developers getData - Intent | Android Developers getQueryParameter - Uri | Android Developers codeを送って、tokenを受け取る コードと必要情報を POST することで、access token との交換をする。この処理は、UIスレッドだとエラーになるので、AsyncTaskで実行する必要がある。 また、交換がうまく行かなかったときは、HttpURLConnection の getInputStream ではなく、 getErrorStream に情報が流れるため、プログラムの確認作業では注意。(この辺をよくわかっていなくて、エラー原因を探すのに苦労した。) redirect_uri はスキームもパスもコード発行依頼時と同じものを使う。 Android/プロセスとスレッド(processes and threads) Async Task | Android Developers tokenを保存する プレファレンスへの保存 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する https //www54.atwiki.jp/api_programming/editx/202.html USBデバッグ http //www.aiseesoft.jp/tutorials/android-debug-mode.html リリースビルド http //androidstudio.hatenablog.com/entry/2014/07/26/154043
https://w.atwiki.jp/cod_blackops/pages/159.html
(オマケ)Zombie Bells ゾンビモードでお馴染みの4人によるクリスマスソング。 詳細不明… ※ D…デンプシー N…ニコライ T…武雄 R…リヒトーフェン D CLOOHING THROUCH THE BLOOD D OF ZOMBIES THAT WE`YE GLAYED T THROUGH THE COBS GOO T LAUCHING ALL THE WAY (FO LA LA!) D MOANING PIECE SWING D SHRIKING FROM THE LIGHT T WHAT FUN IT IS LAUCH AND SING D T AS WE KILL UNDEAD TONIGHT! D T OH ZOMBIE BELLS WHAT A SMELL! D T BONE AND TENDONG FRAY D T OH WHAT FUN IT IS TO BLOW D T A FREAKBAG`S ASS AWAY D T HEY ZOMBIE BELLS,STRAIGHT FROM HELL D T OOZING WITH DECAY D T RING THEIR BELLS WITH SHOTGUN SHELLS D T AND MONKEY BOMBS AND BLADES! R A DAY OR TWO AGO R WE TOOK A NICE SLEIGH RIDE N LITTLE DID E KNOW N ZOMBIE WAS INSIDE R THE MEATSACK TRIED TO BITE R AND TORE A HUNK OF SKIN N SO WE RIPPED HIS HEAD OFF,THREW HIM OUT R N AND THEM RAN OVER HIM! R N OH ZOMBIE BELLS WHAT A SMELL! R N BONE AND TENDONG FRAY R N OH WHAT FUN IT IS TO BLOW R N A FREAKBAG`S ASS AWAY R N HEIL! ZOMBIE BELLS,STRAIGHT FROM HELL R N OOZING WITH DECAY R N RING THEIR BELLS WITH SHOTGUN SHELLS R N AND MONKEY BOMBS AND BLADES! DA! ゾンビ ヴェヴェヴェーヴェヴェヴェーヴェヴェヴェヴェヴェー ヴェヴェヴェーヴェヴェヴェーヴェヴェヴェヴェヴェヴェー(BRAINS!) ウェーウェーウウウーウェウェウェウェウェー ウーウーウーウーウェウェウェウェウェー D,N,T,R HEY ZOMBIE BELLS WHAT A SMELL! D,N,T,R BONE AND TENDONS FRAY D,N,T,R OH WHAT FUN IT IS TO BLOW D,N,T,R A FREAKBAG`S ASS AWAY D,N,T,R BANG! ZOMBIE BELLS STRAIGHT FROM HELL D,N,T,R OOZING WITH DECAY D,N,T,R RING THEIR BELLS WITH SHOTGUN SHELLS D,N,T,R AND MONKEY BOMBS AND BLADES! ゾンビ BRAINSSSSSSSSSS!
https://w.atwiki.jp/kobapan/pages/192.html
Android/Android SDK のインストール Android/Debian Linux 6.0.7 (squeeze) に android-sdk_r22.0.5 開発環境を構築 Android/Desire HD 001HT の SIMロック解除 (Linux版) Android/adb shell の使い方 Android/sdcardをadb経由でフルバックアップするbashスクリプト Android/GitHubとAndroid(Terminal-IDE) Android/Androidのシェルをbashに変更 Android/スマートフォン実機デバッグ JSConsole Android/ユーザーエージェントでCSSを切り替え-javascript利用 Android/様々な画面サイズのスマホに対応する為に
https://w.atwiki.jp/xpedia-android/pages/13.html
JDKインストール http //java.sun.com/javase/ja/6/download.html Eclipseインストール(すでにある場合は不要) http //mergedoc.sourceforge.jp/ AndroidSDKインストール http //developer.android.com/sdk/ Xperia(X10)はAndroid1.6 てきとーにC \直下に置いてtoolsフォルダをPATH追加
https://w.atwiki.jp/androidkensyu/pages/13.html
Android 近年普及が進んでいるスマートフォン向けプラットフォーム。OS、ミドルウェア、主要アプリケーションからなるソフトウェアスタック。
https://w.atwiki.jp/fujiyan/pages/38.html
(作成中) WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト 公式サイト Androidで動く携帯Javaアプリ作成入門 Tech Booster 逆引きAndroid入門 ActivityとView 参考 Android Developers 世界を目指せ!Androidアプリ開発入門 Activityは、画面を表す。 ViewはUIを構成する部品。ActivityにViewを設定することで、画面を構築する。 Viewの構成方法は2つ(静的)レイアウトXMLを記述してコンパイルしたものを設定。お手軽。通常はこっち (動的)Viewオブジェクトを適宜生成して設定。前もって作成するViewが決まらない場合はこっち。 XMLでViewを定義 res/layout以下に.xmlファイルを作成 作成すると、R.layout.[ファイル名]という定数名で、作成したViewを表すIDが定義される(ファイル名がmain_layout.xmlなら、R.layout.main_layoutという定数が定義される)。 定義されたIDをActivity#setContentView()に渡す。 複数のView定義が必要な場合は、その分だけxmlファイルを作れば良い。 画面切り替え 参考 アンドロドロ バックボタンで前画面に戻したい場合はActivity切り替えで実装。バックボタンを押すと、アクティブなActivityに対してfinish()が呼び出され、直前のActivityがアクティブになる。ブラウザの「戻る」感覚だろうから、こっちが通常なんでしょう。 グローバルリソース(カメラ等)の取得/解放は、よほどの事情が無い限り、onResume()/onPause()で行うこと。でも、カメラでよくやるような、SurfaceHolderのsurfaceCreated()/surfaceDestroyed()は、Activity切り替え時のタイミングで呼ばれるっぽいので、ここでカメラの取得/解放を行っても大丈夫っぽい(あやふや)。 Activityを2つ用意するのか、1つのActivity内でViewFlipperを使うかは悩み中。多分、メモリ管理を細かく制御して、OSに負担を掛けないようにするのはActivity2つなんでしょう。次画面のActivity起動時に次画面用のリソースを取得、前画面のリソースを解放とか、onStop()/onRestart()でリソースの一時解放/再取得とか。 ViewFlipperの場合は、全ての画面のリソースをまとめてメモリにロードするんじゃないかと。 アプリケーションの終了 単一Activityの場合はfinish()で良い。 複数Activityの場合は、最後に開始したActivityから順次finish()していき、最後にroot Activityをfinish()させるのが良いと思う。これは、Activityはスタックに詰まれていくことに由来。LIFOでfinish()していく。 多分、ActivityからTaskを終了させる方法は無い。何故なら、Activityは、さまざまなTaskから呼ばれることを想定しているため、自分を呼んだTaskを勝手に終了させるわけにはいけないから、かと。 moveTaskToBack()でTaskをバックグラウンドに追いやって、そのうちOSに掃除してもらう、という方法もある。こっちがAndroidの標準だ、という話もあるけど、何となく、うーん。だって、この方法だと、再起動したときに、前の状態から開始されてしまうし…。 moveTaskToBack()はあくまで「中断」であり、「終了」はやっぱり地道にfinish()していくべきだと思うの 一般的な実装としては、startActivityForResult()でchild Activityを開始し、child Activityの終了後に呼ばれるonActivityResult()で、自身もfinish()する System.exit(0)で終わらせてはゼッタイダメ。 カメラ(Android 2.1 API Level 7) AndroidManifest.xmlの記述 参考 プログラマのネタ帳 uses-permission android name="android.permission.CAMERA" / uses-feature android name="android.hardware.camera" / uses-feature android name="android.hardware.camera.autofocus" / uses-feature android name="android.hardware.camera.flash" / uses-permissionで、カメラ利用の許可が必要であることを宣言し、残りの3つでカメラ、オートフォーカス、フラッシュの機能を使用することを宣言します。 また、Activityの属性に下記を追加。 android screenOrientation="landscape" android theme="@android style/Theme.NoTitleBar.Fullscreen" screenOrientationの設定は、なんか、カメラは水平でしか使えないらしいため…。 themeの設定は、アプリをフルスクリーン表示にするため。カメラアプリは基本的にフルスクリーン。 MediaStore.Images.Media.insertImage()で保存すると画質が落ちる 参考 日本Androidの会 画像を加工しない場合は、生成されたjpegデータをそのまま保存する。 // Camera#takePicture()の第3引数に渡す、コールバックオブジェクト private Camera.PictureCallback pictureListener = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { try { insertImageToMediaStore(data); } catch (IOException e) { throw new RuntimeException(e); } //後処理を記述 } }; // dataに格納されたjpegデータを保存 private void insertImageToMediaStore(byte[] data) throws IOException { ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); ByteArrayInputStream in = new ByteArrayInputStream(data); try { int size; final int BUFFER_SIZE = 8192; byte[] buffer = new byte[BUFFER_SIZE]; BufferedOutputStream out = new BufferedOutputStream(resolver.openOutputStream(uri)); try { while ((size = in.read(buffer, 0, buffer.length)) 0) { out.write(buffer, 0, size); } out.flush(); } finally { out.close(); } } finally { in.close(); } } 画像を加工して保存 参考 Androidのあ~ん rTAKI0329's android ブログ グロブ(OutOfMemoryで落ちる件) なんか、下の方法みたいに、カメラの撮影サイズでBitmapの別インスタンスを生成すると、メモリ不足で落ちるっぽいぞ…。エミュレーション環境では普通に動くけど、実機でカメラ撮影後に突然落ちるような場合は原因の一つとして疑ってみてもいいかも コールバックメソッドに渡されるjpegデータをBitmapに変換して、Canvasで描画をする。その後、Bitmapをjpegで保存する。 jpeg→ビットマップ→jpegの変換を行うので、画質が落ちたり、ファイルサイズが増えたり…。 BitmapFactory.decodeByteArray()で作るBitmapがimmutableなため、copy()でmutableなBitmapを再作成する。API Level 11なら、decodeByteArray()のオプションでmutableなBitmapを直接作れるかも? // Camera#takePicture()の第3引数に渡す、コールバックオブジェクト private Camera.PictureCallback pictureListener = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { Bitmap orgBmp = BitmapFactory.decodeByteArray(data, 0, data.length); Bitmap bmp = orgBmp.copy(Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas(bmp); // canvasで描画 try { insertImageToMediaStore(bmp); } catch (IOException e) { throw new RuntimeException(e); } camera.startPreview(); } }; // Bitmapをjpegで保存 private void insertImageToMediaStore(Bitmap bmp) throws IOException { ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); BufferedOutputStream out = new BufferedOutputStream(resolver.openOutputStream(uri)); try { bmp.compress(Bitmap.CompressFormat.JPEG, 100, out); out.flush(); } finally { out.close(); } } GPSとジオコーディング(Android 2.1 API Level 7) LocationManagerを取得する。 LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); onLocationChanged()が呼ばれなくなる 参考 A Day In The Life LocationManager#removeUpdates()を呼ばずにActivityを終了させると、次回起動時にonLocationChanged()が呼ばれなくなるらしいです。必ず呼びましょう。 配布と署名 アプリケーションはapkファイルにパッケージングして配布する。 署名付きapkファイルじゃないと、端末にインストールされません。 署名のためのkeytool使用法 参考 Android Developers keyalgで指定するアルゴリズムはDSAとRSAがサポートされているらしい。通常はRSAにしておきましょう。 keysizeについては2048以上を推奨とされています。 validityで指定する有効期限については、10000日以上を推奨されています。 ということで、推奨されるkeytoolのオプションは keytool -genkey -v -keystore [keystoreファイル名] -alias [エイリアス] -keyalg RSA -keysize 2048 -validity 10000 1つのkeystoreに対して、複数の鍵を生成できる。keystoreの中で、鍵を識別するためにエイリアスを用いる。 なので例えば、keystoreファイル名はワークスペース名、エイリアスはプロジェクト名(=アプリケーション名)、みたいな感じにすると良い(あくまで例)。 keytool -genkey -v -keystore workspace.keystore -alias app1 -keyalg RSA -keysize 2048 -validity 10000 keytool -genkey -v -keystore workspace.keystore -alias app2 -keyalg RSA -keysize 2048 -validity 10000 keystoreファイルやパスワードは失くしたり忘れたりしないようにね あれ、keytoolいらなくね?(ADT Plugin for Eclipseがあれば) apkを作成したいアプリのプロジェクトのルートのコンテキストメニューから、[Export...]→[Android]-[Export Android Application]を選択する。 [Project Checks]で、何もエラーが無いことを確認して[Next ] [Keystore selection]では、最初にkeystoreファイルを作る場合は[Create new keystore]を選択[Location]には、keystoreファイルのフルパスを入力失くさないように、ワークスペース内に、keystoreファイル格納用のプロジェクトを作成し、そこに作成すると良いかも。 [Password]と[Confirm]には、keystoreファイルにアクセスするためのパスワードを入力する。 [Key Creation]では、下記を入力[Alias]には鍵のエイリアスを入力。まぁ普通はアプリケーション名 [Password]と[Confirm]には、鍵にアクセスするためのパスワードを入力する。 [Validity]には年を入力するので注意。推奨は25年以上です。 [First and Last Name]から[Country Code (XX)]については、どれか1つにでも入力すればOK。 [Destination and key/certificate checks]では、下記を入力[Destination APK file]に、出力するapkファイルをフルパスで入力。 あらまぁ簡単
https://w.atwiki.jp/mywiki2010/pages/17.html
タイトル通り 他所から持ってきたEclipseプロジェクトが動かない (更新 2010/02/17) やったこと この記事のサンプルプロジェクトを試そうとした。とりあえずzipファイルをダウンロード。 ダウンロードしたzipファイルをどうすればいいのか分からない。ワークスペースにプロジェクトを追加する、という作業を行う。 メニューから[File]→[Import]を選択。[General]→[Existing Projects into WorksSpase]を選択。[Select archive file]を選んで、ダウンロードしたファイルを選択。[Finsh]を押す。zipファイルが展開されてプロジェクトができあがる。 [課題]とりあえずEclipseの使い方から知る必要あり。。 実行しようとしたらエラーが出た。古いAndroidプロジェクトなので、バージョンが指定されていないのが原因。プロジェクトのプロパティを開いて[Android]を選ぶ。"Project Build Target"で適当にチェックボックスを入れる。 それでもエラーが出る。よく分からないが、自動生成されるgenフォルダの中のR.javaが悪さをしているらしい。 とりあえずこちらを見て解決→pixass-online Android + Eclipse ビルド出来ない件。ADTのバグ? [課題]genフォルダって何?R.javaって何?